package com.example.demo;


import jakarta.servlet.http.Cookie;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpSession;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.SessionAttribute;

@RequestMapping("/entrance")
@RestController
public class header {
    //    获取多个Cookie


    /**
     * 通过 HttpServerletRequest 来获取整个 Http 的请求的 所有信息
     * 获取到信息后再获取 Cookie
     * @param quest 请求的信息
     * @return 返回 Cookie
     */

    @RequestMapping("/getCookie")
    public String getCookie(HttpServletRequest quest) {
        Cookie[] cookies = quest.getCookies();
        for (Cookie cookie: cookies) {
            System.out.println(cookie.getName() + ":" + cookie.getValue());
        }
        return "获取Cookie 成功! ";
    }


    /**
     * 使用 @CookieValue 绑定 Cookie 的key的注解
     * @param name1 作为 key
     * @return 返回 Cookie 的信息
     */

    @RequestMapping("/getCookie1")
    public String getCookie1(@CookieValue("Cookie_1") Cookie  name1) {
        System.out.println(name1.getName()  + " : " + name1.getValue());
        return name1.getName()  + " : " + name1.getValue();
    }


    /**
     * 要先获取到 session 就需要先设置 session
     *
     */
    @RequestMapping("/setSession")
    public String setSession(HttpServletRequest servletRequest) {

        HttpSession session = servletRequest.getSession();

//        设置键值对
        session.setAttribute("hello", 78);
        session.setAttribute("cake", "bbt");
        session.setAttribute("jat", "good");

        return "session 设置完毕！";
    }


//    获取 session  数据方法一： 使用 HttpServletRequest
    @RequestMapping("getSession1")
    public String getSession1(HttpServletRequest  servletRequest) {
        HttpSession session = servletRequest.getSession();
        return    session.getAttribute("hello")==null ? "未设置session 值" : String.valueOf(session.getAttribute("hello"));
    }

//    获取session 数据方法二 ： 使用 HttpSession
    @RequestMapping("getSession2")
    public String getSession2(HttpSession session) {
        return   session.getAttribute("hello")==null ? "未设置session 值" : String.valueOf(session.getAttribute("cake"));

    }

//    获取session 数据方法三 ： 利用 SessionAttribute 绑定 Session 注解
    @RequestMapping("getSession3")
    public  String getSession3(@SessionAttribute("ja") String jat) {
        return  jat;
    }


//    获取到浏览器和操作系统的信息
    @RequestMapping("getUserAgent")
    public  String getUserAgent(HttpServletRequest request) {
//        先获取到Header 然后字符串中表示 key 得到 value
        return  request.getHeader("User-Agent");
    }

}


